1. Field of the Invention
The present invention relates to computer telephony systems and methods, and more particularly to a stable software architecture for a computer telephony server that operates to preserve the availability of hardware resources.
2. Description of the Related Art
Computer telephony systems, i.e., systems that integrate computers and telephones, are widely used in the art. By combining the power of computers with telephones and messaging services, computer telephony systems have become powerful business tools. The computer telephony systems known in the art are capable of combining voice messaging, facsimile messaging, paging, electronic mail, and other messaging services, through implementations such as interactive voice response systems and unified messaging.
Recently, there have been rapid advances in computer hardware, software and communications systems. As a result, businesses relying on computer telephony systems are confronted with choosing between expensive upgrades in hardware and software or losing a competitive advantage. In addition, businesses also require a computer telephony system that can be easily customized to meet their business needs. Thus, there is a need in the art for a computer telephony system that is extendible and open, flexible and robust. A computer telephony system would be extendible and open if new applications and hardware resources could be added without requiring major modifications of the computer telephony system. A flexible computer telephony system would be compatible with multiple hardware platforms and be easily customizable, allowing the computer telephony system to be utilized for various needs. Finally, a robust computer telephony system would provide a stable environment for running various computer telephony applications and interfacing various hardware resources.
During operation, the software of the computer telephony server interfaces with available hardware resources, such as telephone lines, to implement call processing functions. In one method known in the art, a thread is generated for each telephone line. Each thread controls its telephone line and executes commands and software applications associated with the telephone line. However, a bug in one of the software applications executed on the thread (or another cause of abnormal termination) could cause the thread to crash, tying up the telephone line and other system resources under its control. As a result, these system resources could be unavailable for further processing unless the crash is detected and the system resources are properly recovered.